pyproject.toml 对 flet 构建命令的支持
随着时间的推移,flet build
命令的选项数量大幅增加,在命令行中携带所有这些设置变得不方便。
今天,我们很高兴地宣布另一个 Flet 预发布版本,现在可以在 pyproject.toml
中配置应用程序构建设置!
安装预发布版本
pip install flet==0.25.0.dev3526
出于测试目的,我们建议在专用的 Python 虚拟环境中安装 Flet 预发布版本。
使用预发布版本构建应用程序
要使用 flet build
命令和 Flet 的预发布版本构建您的应用程序,请确保您的 requirements.txt
要么包含确切的版本说明符:
flet==0.25.0.dev3526
要么在 flet
依赖项之前加上 --pre
标志:
--pre
flet
快速开始
在您的 Flet 应用程序的根目录中创建以下最小的 pyproject.toml
文件,或者运行 flet create
从模板创建一个新的应用程序:
[project]
name = "my_app"
version = "1.0.0"
description = "我的第一个 Flet 项目"
authors = [
{name = "John Smith", email = "john@email.com"}
]
dependencies = ["flet==0.25.0.dev3526"]
使用 pyproject.toml
后,您不再需要 requirements.txt
。但是,如果应用程序目录中存在 requirements.txt
文件,flet build
命令将优先从该文件中读取依赖项,而不是从 pyproject.toml
中列出的依赖项。
[project]
是 project.toml
的标准必填部分。
Flet 还支持由 Poetry 创建的包含项目设置的 [tool.poetry]
部分。
flet build
命令也支持的 Poetry 的最小 pyproject.toml
如下:
[tool.poetry]
name = "my_app"
version = "1.0.0"
description = "我的第一个 Flet 项目"
authors = ["John Smith <john@email.com>"]
[tool.poetry.dependencies]
python = "^3.10"
flet = "0.25.0.dev3526"
project.name
(或 tool.poetry.name
)对应于 flet build
命令的 --project
选项,它将是应用程序包或可执行文件的名称。project.name
的值将进行“slugify”处理,其中所有非字母数字值将被替换为破折号 -
。
project.version
(或 tool.poetry.version
)对应于 --build-version
选项,它是一个 "x.y.z" 字符串的值,用作向用户显示的版本号。
project.description
(或 tool.poetry.description
)对应于 --description
选项,它是用于可执行文件或包的描述。
project.authors
和 tool.poetry.authors
不会被 flet build
使用,但这是标准和其他工具所要求的。
用 CLI 选项覆盖配置
pyproject.toml
中的所有设置都有相应的 flet build
CLI 选项。如果您运行 flet build
命令并指定已经在 pyproject.toml
中配置的选项,CLI 选项的值将覆盖配置文件中的值。
项目依赖项
在 project.dependencies
部分列出项目依赖项。该值是一个带有类似 pip 的需求说明符的数组:
[project]
dependencies = [
"flet==0.25.0.dev3526",
"numpy"
]
产品信息
所有特定于 Flet 的设置都应放入 [tool.flet]
部分及其下面的子部分中。
产品信息设置补充了 [project]
部分中的设置,并允许配置应用程序包标识符和产品显示名称。
[tool.flet]
org = "com.mycompany" # --org
product = "产品名称" # --product
company = "我的公司" # --company
copyright = "版权所有 (C) 2024 年,我的公司" # --copyright
build_number = 1 # --build-number
应用程序包内容
以下设置控制 Python 应用程序归档的内容以及应用程序/包源的编译。
[tool.flet]
app.module = "main" # --模块名称
app.path = "src" # 相对于 `pyproject.toml` 的 Python 应用程序的路径
app.exclude = ["assets"] # --排除
compile.app = false # -- 编译应用程序
compile.packages = false # --编译包
compile.cleanup = false # --编译时清理
它们也可以在各自的子部分下写成如下形式:
[tool.flet.app]
module = "main"
path = "src"
exclude = ["assets"]
[tool.flet.compile]
app = false
packages = false
cleanup = false
启动画面(Splash)
[tool.flet.splash]
color = "" # --启动画面颜色
dark_color = "" # --深色启动画面颜色
web = false # --无网页启动画面
ios = false # --无 iOS 启动画面
android = false # --无 Android 启动画面
权限
[tool.flet]
permissions = ["camera", "microphone"] # --权限
深度链接
[tool.flet.deep_linking]
scheme = "https" # --深度链接方案
host = "mydomain.com" # --深度链接主机
Android 设置
[tool.flet.android]
adaptive_icon_background = "" # --Android 自适应图标背景
split_per_abi = false # --按 ABI 拆分
权限(注意键名周围的引号 "
):
[tool.flet.android.permission] # --Android 权限
"android.permission.CAMERA" = true
"android.permission.CAMERA" = true
功能(注意键名周围的引号 "
):
[tool.flet.android.feature] # --Android 功能
"android.hardware.camera" = false
Android 特定的深度链接:
[tool.flet.android.deep_linking]
scheme = "https" # --深度链接方案
host = "mydomain.com" # --深度链接主机
Android 捆绑包签名选项:
[tool.flet.android.signing]
# 可以使用 `--android-signing-key-store-password` 和 `--android-signing-key-password` 选项或
# FLET_ANDROID_SIGNING_KEY_STORE_PASSWORD 和 FLET_ANDROID_SIGNING_KEY_PASSWORD 环境变量传递存储和密钥密码。
key_store = "path/to/store.jks" # --Android 签名密钥存储
key_alias = "upload"
iOS 设置
[tool.flet.ios]
team = "team_id" # --团队
[tool.flet.ios.info] # --信息列表
NSCameraUsageDescription = "此应用程序使用相机来..."
[tool.flet.ios.info.deep_linking]
scheme = "https"
host = "mydomain.com"
macOS 设置
[tool.flet.macos]
entitlement."com.apple.security.personal-information.photos-library" = true
[tool.flet]
build_arch = "arm64" # --架构 - 如果未指定架构,Flet 将为 arm64 和 x86_64 架构构建通用包
Web 设置
[tool.flet.web]
base_url = "/" # --基础 URL
renderer = "canvaskit" # --Web 渲染器
use_color_emoji = false # --使用彩色表情符号
route_url_strategy = "path" # --路由 URL 策略
Flutter 设置
依赖项
flutter.dependencies = ["flet_video", "flet_audio"] # --包含包
或者使用带有版本的替代语法:
[tool.flet.flutter.dependencies]
flet_video = "1.0.0"
flet_audio = "2.0.0"
或者使用磁盘上包的路径:
[tool.flet.flutter.dependencies.my_package]
path = "/path/to/my_package"
额外的构建参数
flutter.build_args = ["--some-flutter-arg"] # --Flutter 构建参数
额外的 pubspec.yaml
设置
允许将任意内容注入到生成的 pubspec.yaml
中,例如:
[tool.flet.flutter.pubspec.dependency_overrides]
web = "1.0.0"
自定义模板
[tool.flet.template]
path = "gh:some-github/repo" # --模板
dir = "" # --模板目录
ref = "" # --模板引用
就是这样!升级到 Flet 0.25.0.dev3526,尝试这个新功能并告诉我们您的想法! 干杯!